'use strict';


const Controller = require('egg').Controller;

class UserController extends Controller {

  // 验证码快捷登录 or 创建用户
  async quickUser() {
    const { ctx } = this;
    const { status, data, msg } = await ctx.service.web.user.quickUser(ctx.request.body);
    // 删除用户敏感信息
    if (data) {
      delete data.user.password; delete data.user.paypassword;
    }
    if (msg) return ctx.helper.error(msg, 400);
    if (status === 'login') {
      ctx.helper.success('登录成功', {
        loginType: data.type,
        userInfo: data.user,
        token: ctx.helper.getToken(data.user),
      });
    }
    if (status === 'register') {
      ctx.helper.success('用户注册 并 登录成功', {
        registerType: data.type,
        userInfo: data.user,
        token: ctx.helper.getToken(data.user),
      });
    }
  }


  // 账号密码登录
  async accountAndPasswordToLogin() {
    const { ctx } = this;
    const res = await ctx.service.web.user.accountAndPasswordToLogin(ctx.request.body);
    if (res.msg) return ctx.helper.error(res.msg, res.code ? res.code : 400);
    delete res.user.password; delete res.user.paypassword;

    if (res) {
      ctx.helper.success('登录成功', {
        loginType: res.loginType,
        userInfo: res.user,
        token: ctx.helper.getToken(res),
      });
    } else {
      return ctx.helper.error('登录失败', 400);
    }
  }

  // 验证码快捷修改密码
  async quickUpdatePassword() {
    const { ctx } = this;
    const res = await ctx.service.web.user.quickUpdatePassword(ctx.request.body);
    if (res.msg) return ctx.helper.error(res.msg, res.code ? res.code : 400);
    res ? ctx.helper.success('重设密码成功', res) : ctx.helper.error('重设密码失败', 400);

  }

  // gitHub登录
  async gitHubLogin() {
    const { ctx } = this;
    const res = await ctx.service.web.user.gitHubLogin(ctx.request.body.code);
    if (res.msg) return ctx.helper.error(res.msg, res.code ? res.code : 400);
    res ? ctx.helper.success('gitHub登录成功', res) : ctx.helper.error('gitHub登录失败', 400);
  }

  // 微信登录
  async WeChatLogin() {
    const { ctx } = this;
    const res = await ctx.service.web.user.WeChatLogin(ctx.request.body.code);
    if (res.msg) return ctx.helper.error(res.msg, res.code ? res.code : 400);
    res ? ctx.helper.success('WeChat登录成功', res) : ctx.helper.error('WeChat登录失败', 400);
  }

  // 获取用户主页个人信息 根据用户id
  async getUserHomePage() {
    const { ctx } = this;
    const res = await ctx.service.web.user.getUserHomePage(ctx.params.user_id);
    res ? ctx.helper.success('成功', res) : ctx.helper.error('失败', 400);
  }


  // 关注用户
  async addFocus() {
    const { ctx } = this;
    const res = await ctx.service.web.user.addFocus(ctx.request.body);
    if (res.msg) return ctx.helper.error(res.msg, 400);
    res ? ctx.helper.success('关注成功', res) : ctx.helper.error('关注失败', 400);
  }

  // 取消关注用户
  async destroyFocus() {
    const { ctx } = this;
    const res = await ctx.service.web.user.destroyFocus(ctx.params.follerd_id);
    res ? ctx.helper.success('取消关注成功') : ctx.helper.error('您已取消关注', 400);
  }

  // 根据id判断是否已关注
  async getFocusById() {
    const { ctx } = this;
    const res = await ctx.service.web.user.getFocusById(ctx.params.follerd_id);
    res ? ctx.helper.success('当前状态已关注', res) : ctx.helper.success('当前状态未关注');
  }

  // 获取用户的关注列表 根据用户id
  async followings() {
    const { ctx } = this;
    ctx.request.query.foller_id = ctx.params.user_id; // 关注者的id 就是当前登录的id
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.user.getFriendList(ctx.request.query);
    res ? ctx.helper.success('获取关注用户列表成功', res) : ctx.helper.error('获取关注用户列表失败', 400);
  }

  // 获取用户的粉丝列表 根据用户id
  async followers() {
    const { ctx } = this;
    ctx.request.query.follerd_id = ctx.params.user_id; // 关注者的id
    // ctx.request.query.follerd_id = ctx.state.user.id; // 关注者的id 就是当前登录的id
    ctx.request.query.pageNum = ctx.request.query.pageNum ? ctx.request.query.pageNum : 1;
    ctx.request.query.pageSize = ctx.request.query.pageSize ? ctx.request.query.pageSize : 10;
    const res = await ctx.service.web.user.getFriendList(ctx.request.query);
    res ? ctx.helper.success('获取用户的粉丝列表成功', res) : ctx.helper.error('获取用户的粉丝列表失败', 400);
  }


}

module.exports = UserController;
